iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0
DevOps

SRE/K8S 碎碎念系列 第 14

D14 EC2 Instance Connect Private Endpoint

  • 分享至 

  • xImage
  •  

之前有提到我們將連線 EKS 的方式改成 Jump 機 + SSM,從此開啟一條比喝玫瑰花茶還要順暢的連線道路。但我們有沒有辦法連 jump 機都不要了呢?

先複習一下我們之前的做法,我們之前在 private EKS 的 VPC 環境內設定了 public subnet,並且將 jump 機放在這個 subnet 裡面。這最大的缺點就是額外的 instance 費用。

另一個作法是直接新增 VPC endpoint 直接連線到 private subnet

但不愧是我大 AWS,提供了全新的功能 EC2 Instance Connect Private Endpoint,她允許我通過 CLI 使用 SSH 直接連線到 instance。方法是為相關子網添加特定的實例連接端點
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-with-ec2-instance-connect-endpoint.html

先前往 AWS service 找到 endpoints,點擊 create endpoint

https://ithelp.ithome.com.tw/upload/images/20230929/20118525oCp6hSq8Ay.png

找到 create endpoint,並選擇相對應的 VPC 跟 subnet

建立對應的 IAM policy

ref: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/permissions-for-ec2-instance-connect-endpoint.html

{
    "Version": "2012-10-17",
    "Statement": [{
            "Sid": "EC2InstanceConnect",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Effect": "Allow",
            "Resource": "arn:aws:ec2:region:account-id:instance-connect-endpoint/eice-123456789abcdef",
            "Condition": {
                "NumericEquals": {
                    "ec2-instance-connect:remotePort": "22"
                },
                "IpAddress": {
                    "ec2-instance-connect:privateIpAddress": "10.0.1.0/31"
                },
                "NumericLessThanEquals": {
                    "ec2-instance-connect:maxTunnelDuration": "3600"
                }
            }
        },
        {
            "Sid": "SSHPublicKey",
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:osuser": "ami-username"
                }
            }
        },
        {
            "Sid": "Describe",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceConnectEndpoints"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

建立 Security group

ref: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/eice-security-groups.html

inbound, outbound 都要加入 rule
https://ithelp.ithome.com.tw/upload/images/20230929/20118525QXtF3fbi6S.png

然後回到其中一台 EKS 內部的 Instance,點擊 connect,選擇 connect using ec2 instance connect endpoint 並選擇你剛剛建立的 endpoint 即可連線

https://ithelp.ithome.com.tw/upload/images/20230929/20118525G8gnT4WYD2.png

在 local 端使用 aws ec2-instance-connect 即可連進 private instance 囉

aws ec2-instance-connect ssh --instance-id i-1234567890example --connection-type eice

上一篇
D13 appmesh-controller
下一篇
D15 monitor metrics
系列文
SRE/K8S 碎碎念30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言